package com.cg.leetcode;

import org.junit.Test;

/**
 * 14.最长公共前缀
 *
 * @program: LeetCode->LeetCode_14
 * @description: 14.最长公共前缀
 * @author: cg
 * @create: 2021-08-31 17:23
 **/
public class LeetCode_14 {

    @Test
    public void test14() {
        longestCommonPrefix(new String[]{"flower", "flow", "flight"});
    }

    /**
     * 编写一个函数来查找字符串数组中的最长公共前缀。
     * 如果不存在公共前缀，返回空字符串 ""。
     * <p>
     * 示例 1：
     * 输入：strs = ["flower","flow","flight"]
     * 输出："fl"
     * <p>
     * 示例 2：
     * 输入：strs = ["dog","racecar","car"]
     * 输出：""
     * 解释：输入不存在公共前缀。
     * <p>
     * 提示：
     * 1) 1 <= strs.length <= 200
     * 2) 0 <= strs[i].length <= 200
     * 3) strs[i] 仅由小写英文字母组成
     *
     * @param strs
     * @return
     */
    public String longestCommonPrefix(String[] strs) {
        //边界条件判断
        if (strs == null || strs.length == 0) {
            return "";
        }
        //默认第一个字符串是他们的公共前缀
        String pre = strs[0];
        int i = 1;
        while (i < strs.length) {
            //不断的截取
            while (strs[i].indexOf(pre) != 0) {
                pre = pre.substring(0, pre.length() - 1);
            }
            i++;
        }
        return pre;
    }

}
